package collection._02list;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class Demo03_Iterator {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        //1.迭代器遍历：
        System.out.println("1.迭代器遍历：");
        Iterator<String> it = list.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }

        //2.增强for遍历：
        System.out.println("2.增强for遍历:");
        for (String s : list) {
            System.out.println(s);
        }

        //3.lambda表达式遍历：
        System.out.println("3.lambda表达式遍历：");
        list.forEach(s -> System.out.println(s));
        //list.forEach(System.out::println);//soutc快捷生成方法的引用


        //4.普通for循环遍历
        //size方法跟get方法还有循环结合的方式，利用索引获取到集合中的每一个元素
        System.out.println("4.普通for循环遍历：");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        //5.列表迭代器遍历
        System.out.println("5.列表迭代器遍历");
        ListIterator<String> listIterator = list.listIterator();
        while(listIterator.hasNext()) {
            //相对于Iterator，ListIterator多了add方法
            //在遍历的过程中可以添加元素
            System.out.println(listIterator.next());
        }

    }
}
